# 初始化一个空列表 prime，用于存储找到的素数
prime = []
N=10**9
# 假设 N 是一个预先定义的常量，这里创建一个长度为 N 的布尔类型列表 is_prime
# 初始时，将列表中的每个元素都设为 True，表示 假设 所有数都是素数
is_prime = [True] * N

# 定义一个函数 Era，该函数用于实现埃拉托斯特尼筛法来找出小于等于 n 的所有素数
def Era(n):
    # 0 和 1 不是素数，将它们对应的 is_prime 列表中的元素设为 False
    is_prime[0] = is_prime[1] = False
    # 从 2 开始遍历到 n
    for i in range(2, n + 1):
        # 如果 is_prime[i] 为 True，说明 i 是素数
        if is_prime[i]:
            # 将素数 i 添加到 prime 列表中
            prime.append(i)
            # 如果 i 的平方大于 n，说明 i 的倍数都已经被之前的素数标记过了，无需再进行标记
            if i * i > n:
                continue
            # 从 i 的平方开始，以 i 为步长，将 i 的倍数对应的 is_prime 列表中的元素设为 False
            for j in range(i * i, n + 1, i):
                is_prime[j] = False
Era(20250325)
print(prime)